package com.yxw.yxnet_cd_center.customer_service.service;

import com.yxw.yxnet_cd_center.common.dto.PageVO;
import com.yxw.yxnet_cd_center.customer_service.dto.PasswordDTO;
import com.yxw.yxnet_cd_center.customer_service.dto.UserEmpDTO;
import com.yxw.yxnet_cd_center.customer_service.dto.UserEmpQueryDTO;
import com.yxw.yxnet_cd_center.customer_service.dto.UserEmpUpdateDTO;
import com.yxw.yxnet_cd_center.customer_service.entity.YxCsUserMenuEntity;
import com.yxw.yxnet_cd_center.customer_service.vo.UserEmpVO;
import com.yxw.yxnet_cd_center.customer_service.vo.YxCsMenuVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 员工管理Service接口
 *
 * @author xiexuxin
 * @date 2023-09-19
 */
public interface IUserService {

    /**
     * 添加员工
     * @param empDTO
     */
    void addUser(UserEmpDTO empDTO);

    /**
     * 根据Id删除员工
     * @param id
     */
    void deleteUserById(Long id);

    /**
     * 根据id批量删除员工
     * @param ids
     */
    void deleteUserByIds(@Param("ids") List<Long> ids);

    /**
     * 更新员工
     * @param id
     * @param empDTO
     */
    void updateUser(Long id, UserEmpUpdateDTO empDTO);

    /**
     * 更新员工头像
     * @param id
     * @param picUrl
     */
    void updateUserPicUrl(Long id, String picUrl);

    /**
     * 根据Id查询员工
     * @param id
     * @return
     */
    UserEmpVO selectUserById(Long id);

    /**
     * 员工列表条件查询
     * @param empQueryDTO
     * @return
     */
    PageVO<UserEmpVO> getUserList(UserEmpQueryDTO empQueryDTO);

    /**
     * 查询员工列表
     * @return
     */
    List<UserEmpVO> userList();

    /**
     * 编辑员工菜单权限
     * @param userMenus
     */
    void updateUserMenuByUserId(List<YxCsUserMenuEntity> userMenus);

    /**
     * 修改密码
     * @param id
     * @param passwordDTO
     * @return
     */
    Boolean changePassword(Long id, PasswordDTO passwordDTO);

    /**
     * 根据用户返回菜单树
     * @param userId
     * @return
     */
    List<YxCsMenuVo> getMenuTreeByUser(Long userId);

    /**
     * 根据用户id查询角色返回菜单树
     * @param userId
     * @return
     */
    List<YxCsMenuVo> getMenuTreeByUserMenu(Long userId);

    /**
     * 查询工单中心列表
     * @return
     */
    List<UserEmpVO> workOrderList();

    /**
     * 员工列表条件查询
     * @param empQueryDTO
     * @return
     */
    PageVO<UserEmpVO> getWorkOrderList(UserEmpQueryDTO empQueryDTO);

}
